package com.panopset.centralen.grid;

import static java.lang.Math.abs;
import static java.lang.Math.min;

import java.awt.Point;
import java.awt.Rectangle;

/**
 * Shape factory.
 *
 * @author Karl Dinwiddie
 *
 */
public final class ShapeFactory {

    /**
     * Create rectangle from points. Order does not matter.
     *
     * @param a
     *            Point a.
     * @param b
     *            Point b.
     * @return Rectangle.
     */
    public static Rectangle createRectangleFromPoints(final Point a,
            final Point b) {
        Rectangle r = new Rectangle();
        setRectangleFromPoints(r, a, b);
        return r;
    }

    /**
     * Set rectangle from points.
     *
     * @param r
     *            Rectangle to set dimensions of.
     * @param a
     *            Point a.
     * @param b
     *            Point b.
     */
    public static void setRectangleFromPoints(final Rectangle r, final Point a,
            final Point b) {
        setRectangleFromInts(r, a.x, a.y, b.x, b.y);
    }

    /**
     * Set rectangle from integers.
     * @param r
     *            Rectangle to set dimensions of.
     * @param x0 Point 0 x coordinate.
     * @param y0 Point 0 y coordinate.
     * @param x1 Point 1 x coordinate.
     * @param y1 Point 1 y coordinate.
     */
    public static void setRectangleFromInts(final Rectangle r, final int x0,
            final int y0, final int x1, final int y1) {
        r.x = min(x0, x1);
        r.y = min(y0, y1);
        r.width = abs(x1 - x0);
        r.height = abs(y1 - y0);
    }

    /**
     * Private constructor.
     */
    private ShapeFactory() {
        // nothing to do here.
    }
}
